package server

import (
	"novel-go/api"

	"github.com/gin-gonic/gin"
)

// 定义一个结构体，用来注册路由
type ApiRouter struct {
}

// 初始化路由 绑定api下的 所有方法
func (s *ApiRouter) InitApiRouter(Router *gin.RouterGroup) {

	// 调用api下的所有方法
	// 第一层：个人理解。这个是暴露出来的第一层类似于 前端控制器（spring内的） 可以通过这个来选择不同的路由
	// 至于这个 api就是 controller 层的 具体的api接口  比如 用户的注册 登录 等 具体的实现
	// 第二层：同时为了精简 通过反射可以调用api下的所有方法。这个反射就是要 进入的第二层
	// 第三层：这一层才是具体的执行方法
	var apiRouterApi = api.ApiGroupApp.ServerApiGroup.ServerApi
	{
		// 请求 POST /api/v1.0/ 会调用 ReflectAction 这个会根据路径来通过反射 动态判断执行哪一个controller
		Router.POST("/", apiRouterApi.ReflectAction)
		// 请求 POST /api/v1.0/report 会调用 Report
		Router.POST("/report", apiRouterApi.Report)
	}
}
